
package paneles;
import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;

import javax.swing.JButton;
import javax.swing.JInternalFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableColumn;

import entidades.Empleado;

import arreglos.EmpleadoArrayList;



import principal.Principal;
import util.Utilitarios;



public class PanelListadoEmpleados extends JPanel implements ActionListener {

	private static final long serialVersionUID = 1L;
	
	 private JTable tablaListadoEmpleados;
	    private JButton btnCerrar;
	    private JButton btnActualizar;
	    private JScrollPane scrollPaneTablaListadoEmpleados;
	    private final String[] nombreColumnas = {"Codigo",
	        "Nombre",
	        "Apellido Paterno",
	        "Apellido Materno",
	        "Dni",
	        "Telefono",
	        "Direccion",
	        "Email",
	        "Fec.Nacimiento",
	        "Usuario",
	        "Clave",
	        "Perfil Empleado",
	        "Estado"};
	    private final int numeroColumnasTabla = 13;
	    
	private Principal appletPrincipal; 
	private JInternalFrame ventanaListadoEmpleados;

    public PanelListadoEmpleados(Principal pAppletPrincipal, JInternalFrame pVentanaListadoEmpleados) {
        try {
            setLayout(null);

            this.appletPrincipal = pAppletPrincipal;
            this.ventanaListadoEmpleados = pVentanaListadoEmpleados;

            setLayout(new BorderLayout());

            tablaListadoEmpleados = new JTable();
            tablaListadoEmpleados.setDragEnabled(true);

            tablaListadoEmpleados.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);

            scrollPaneTablaListadoEmpleados = new JScrollPane(tablaListadoEmpleados);
            scrollPaneTablaListadoEmpleados.setBounds(10, 0, 870, 520);
            scrollPaneTablaListadoEmpleados.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
            scrollPaneTablaListadoEmpleados.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);


            add(scrollPaneTablaListadoEmpleados);


            btnActualizar = new JButton("Actualizar");
            btnActualizar.setBounds(680, 525, 100, 30);
            btnActualizar.addActionListener(this);
            this.add(btnActualizar);


            btnCerrar = new JButton("Cerrar");
            btnCerrar.setBounds(790, 525, 90, 30);
            btnCerrar.addActionListener(this);
            this.add(btnCerrar);

            ActualizarListado();


        } catch (Exception e) {
            e.printStackTrace();
        }

    }

    public void actionPerformed(ActionEvent e) {
    	

        if (e.getSource() == btnCerrar) {

        	appletPrincipal.ventanaListadoEmpleados.setVisible(false);
        	appletPrincipal.ventanaListadoEmpleados = null;
        }

        if (e.getSource() == btnActualizar) {
            ActualizarListado();
        }
   
    }
      

   
    private void ActualizarListado() {
        DefaultTableModel datos = null;
        try {
            Object[][] listadoEmpleados = ObtenerListadoEmpleados();

            datos = new DefaultTableModel(listadoEmpleados, nombreColumnas);

            tablaListadoEmpleados.setModel(datos);

            TableColumn columnaCodigo = tablaListadoEmpleados.getColumnModel().getColumn(0);
            columnaCodigo.setPreferredWidth(100);

            TableColumn columnaNombre = tablaListadoEmpleados.getColumnModel().getColumn(1);
            columnaNombre.setPreferredWidth(150);

            TableColumn columnaApePaterno = tablaListadoEmpleados.getColumnModel().getColumn(2);
            columnaApePaterno.setPreferredWidth(150);

            TableColumn columnaApeMaterno = tablaListadoEmpleados.getColumnModel().getColumn(3);
            columnaApeMaterno.setPreferredWidth(150);

            TableColumn columnaDni = tablaListadoEmpleados.getColumnModel().getColumn(4);
            columnaDni.setPreferredWidth(100);

            TableColumn columnaTelefono = tablaListadoEmpleados.getColumnModel().getColumn(5);
            columnaTelefono.setPreferredWidth(100);

            TableColumn columnaDireccion = tablaListadoEmpleados.getColumnModel().getColumn(6);
            columnaDireccion.setPreferredWidth(150);

            TableColumn columnaEmail = tablaListadoEmpleados.getColumnModel().getColumn(7);
            columnaEmail.setPreferredWidth(200);

            TableColumn columnaFecNac = tablaListadoEmpleados.getColumnModel().getColumn(8);
            columnaFecNac.setPreferredWidth(100);

            TableColumn columnaLogin = tablaListadoEmpleados.getColumnModel().getColumn(9);
            columnaLogin.setPreferredWidth(150);

            TableColumn columnaClave = tablaListadoEmpleados.getColumnModel().getColumn(10);
            columnaClave.setPreferredWidth(150);

            TableColumn columnaPerfil = tablaListadoEmpleados.getColumnModel().getColumn(11);
            columnaPerfil.setPreferredWidth(100);

            TableColumn columnaEstado = tablaListadoEmpleados.getColumnModel().getColumn(12);
            columnaEstado.setPreferredWidth(100);
        } catch (Exception ex) {
        }
    }
    
  
   
    private Object[][] ObtenerListadoEmpleados() {
        EmpleadoArrayList arrayListEmpleados = null;
        ArrayList<Empleado> listadoEmpleados = null;
        int nummeroFilas = 0;
        int numColumnas = numeroColumnasTabla;
        int filaActual = 0;

        Object matrix[][] = null;
        try {
            arrayListEmpleados = new EmpleadoArrayList();
            listadoEmpleados = new ArrayList<Empleado>();
            listadoEmpleados = arrayListEmpleados.ListadoEmpleados();

            nummeroFilas = listadoEmpleados.size();

            matrix = new Object[nummeroFilas][numColumnas];

            for (Empleado empleado : listadoEmpleados) {

                matrix[filaActual][0] = empleado.getCodigo();
                matrix[filaActual][1] = empleado.getNombre();
                matrix[filaActual][2] = empleado.getApellidoPaterno();
                matrix[filaActual][3] = empleado.getApellidoMaterno();
                matrix[filaActual][4] = empleado.getDni();
                matrix[filaActual][5] = empleado.getTelefono();
                matrix[filaActual][6] = empleado.getDireccion();
                matrix[filaActual][7] = empleado.getEmail();
                matrix[filaActual][8] = Utilitarios.FormatearFechaParaListar(empleado.getFechaNacimiento());
                matrix[filaActual][9] = empleado.getLogin();
                matrix[filaActual][10] = empleado.getClaveAccesoSistema();
                matrix[filaActual][11] = Utilitarios.FormatearPerfilEmpleado(empleado.getPerfilEmpleado());
                matrix[filaActual][12] = Utilitarios.FormatearEstadoEmpleado(empleado.getEstadoEmpleado());

                filaActual++;
            }


        } catch (Exception ex) {
        }
        return matrix;
    }


}
